package types

type CameraResponse struct {
	Code         int          `json:"code"`
	Message      string       `json:"message"`
	FaceDetected bool         `json:"face_detected"` // 是否检测到人脸
	Measurements Measurements `json:"measurements"`  // 眼睛、嘴巴、脸宽、眼睛角度、瞳距、黄金三角角度
	PupilPoints  PupilPoints  `json:"pupil_points"`  // 瞳孔坐标
}
type FaceModelResponse struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Data    struct {
		ModelPath string `json:"model_path"`
	} `json:"data,optional"`
}

type GlassMeasurements struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
	Data    struct {
		ImagePath            string    `json:"image_path"`
		GlassesLegLengthInfo [][]int   `json:"glasses_leg_length_info"`
		GlassesEyeLengthInfo [][]int   `json:"glasses_eye_length_info"`
		TiltAngleInfo        [][]int   `json:"tilt_angle_info"`
		DataPixelInfo        []float64 `json:"data_pixel_info"`
		DataMmInfo           []float64 `json:"data_mm_info"`
	} `json:"data,optional"`
}

type FrontGlassMeasurements struct {
	Message string `json:"message"`
	Code    int    `json:"code"`
	Data    struct {
		ImagePath             string `json:"image_path"`
		GlassWidthPixel       string `json:"glass_width_pixel"`
		NoseWidthPixel        string `json:"nose_width_pixel"`
		LeftGlassHeightPixel  string `json:"left_glass_height_pixel"`
		RightGlassHeightPixel string `json:"right_glass_height_pixel"`
		LeftIrisHeightPixel   string `json:"left_iris_height_pixel"`
		RightIrisHeightPixel  string `json:"right_iris_height_pixel"`
		LeftIrisWidthPixel    string `json:"left_iris_width_pixel"`
		RightIrisWidthPixel   string `json:"right_iris_width_pixel"`
		GlassWidthMm          string `json:"glass_width_mm"`
		NoseWidthMm           string `json:"nose_width_mm"`
		LeftGlassHeightMm     string `json:"left_glass_height_mm"`
		RightGlassHeightMm    string `json:"right_glass_height_mm"`
		LeftIrisHeightMm      string `json:"left_iris_height_mm"`
		RightIrisHeightMm     string `json:"right_iris_height_mm"`
		LeftIrisWidthMm       string `json:"left_iris_width_mm"`
		RightIrisWidthMm      string `json:"right_iris_width_mm"`
	} `json:"data"`
}

type CameraStatus struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
}

type CaptureResponse struct {
	Message   string `json:"message"`
	Code      int    `json:"code"`
	Path      string `json:"path"`
	DepthPath string `json:"depth_path"`
}

type CaptureWithGlassResponse struct {
	Message    string `json:"message"`
	Code       int    `json:"code"`
	LeftPath   string `json:"left_path"`
	RightPath  string `json:"right_path"`
	MiddlePath string `json:"middle_path"`
}

type LocalCommonResponse struct {
	Code    int    `json:"code"`
	Message string `json:"message"`
}

type Measurements struct {
	RightEye            EyeDimensions `json:"right_eye"`             // 右眼
	LeftEye             EyeDimensions `json:"left_eye"`              // 左眼
	EyeDistances        EyeDistances  `json:"eye_distances"`         // 眼睛距离
	FaceWidths          FaceWidths    `json:"face_widths"`           // 脸宽
	EyeAngles           EyeAngles     `json:"eye_angles"`            // 眼睛角度
	GoldenTriangleAngle float64       `json:"golden_triangle_angle"` // 黄金三角角度
	PupilDistance       float64       `json:"pupil_distance"`        // 瞳距
}

type EyeDimensions struct {
	Width  float64 `json:"width"`  // 眼睛宽度
	Height float64 `json:"height"` // 眼睛高度
}

type EyeDistances struct {
	Inner float64 `json:"inner"` // 内眼睛距离
	Outer float64 `json:"outer"` // 外眼睛距离
}

type FaceWidths struct {
	Temple   float64 `json:"temple"`   // 脸型
	Jaw      float64 `json:"jaw"`      // 唇宽
	Mandible float64 `json:"mandible"` // 舌宽
}

type EyeAngles struct {
	RightInner float64 `json:"right_inner"` // 右眼内角度
	LeftInner  float64 `json:"left_inner"`  // 左眼内角度
	RightOuter float64 `json:"right_outer"` // 右眼外角度
	LeftOuter  float64 `json:"left_outer"`  // 左眼外角度
}

type PupilPoints struct {
	Left  []float64 `json:"left"`  // Assuming left_lens is a slice of float64
	Right []float64 `json:"right"` // Assuming right_lens is a slice of float64
}
